import torch

mydata1 = torch.tensor([1, 2, 3, 4, 5])
print('mydata1--->', mydata1.shape, mydata1)  # 一个普通的数组 1维数据
mydata2 = mydata1.unsqueeze(dim=0)
print('在0维度上拓展维度：', mydata2, mydata2.shape)  # 1*5
mydata3 = mydata1.unsqueeze(dim=1)
print('在1维度上拓展维度：', mydata3, mydata3.shape)  # 5*1
mydata4 = mydata1.unsqueeze(dim=-1)
print('在-1维度上拓展维度：', mydata4, mydata4.shape)  # 5*1
mydata5 = mydata4.squeeze()
print('压缩维度：', mydata5, mydata5.shape)  # 1*5

# todo 示例
# 创建一个包含单元素维度的张量
tensor_with_single_dim = torch.tensor([[[1, 2, 3]]])
print("原始张量形状:", tensor_with_single_dim.shape)  # 输出: torch.Size([1, 1, 3])

# 使用 squeeze 方法移除单元素维度
squeezed_tensor = tensor_with_single_dim.squeeze()
print("squeeze 后的张量形状:", squeezed_tensor.shape)  # 输出: torch.Size([3])
# todo 总结：squeeze 方法用于移除张量中维度大小为 1 的维度，使张量形状更简洁。
#  unsqueeze 方法用于在指定位置插入一个维度大小为 1 的新维度，调整张量形状以满足特定需求。
#  squeeze 和 unsqueeze 方法的参数 dim 用于指定要操作的维度，dim 的取值范围为 [-len(tensor.shape), len(tensor.shape))。
#  squeeze函数删除形状为1的维度（降维） unsgueeze函数添加形状为1的维度（升维）。
